package com.zenithmind.gateway.service;

import org.springframework.http.server.reactive.ServerHttpRequest;

/**
 * 网关服务接口
 * 遵循接口隔离原则：定义网关服务的核心功能
 * 遵循依赖倒置原则：高层模块依赖抽象而非具体实现
 */
public interface GatewayService {
    
    /**
     * 检查服务健康状态
     * @return 健康状态信息
     */
    HealthStatus checkHealth();
    
    /**
     * 获取网关统计信息
     * @return 统计信息
     */
    GatewayStatistics getStatistics();
    
    /**
     * 验证请求是否被允许通过网关
     * @param request HTTP请求
     * @return 验证结果
     */
    ValidationResult validateRequest(ServerHttpRequest request);
    
    /**
     * 健康状态枚举
     */
    enum HealthStatus {
        HEALTHY, DEGRADED, UNHEALTHY
    }
    
    /**
     * 网关统计信息
     */
    interface GatewayStatistics {
        long getTotalRequests();
        long getSuccessfulRequests();
        long getFailedRequests();
        double getAverageResponseTime();
    }
    
    /**
     * 验证结果
     */
    interface ValidationResult {
        boolean isValid();
        String getReason();
    }
}
